/**
 * 订单状态工具函数
 */

// 订单状态枚举
export const OrderStatus = {
  PENDING: '0',    // 待支付
  PAID: '1',       // 已支付，待发货
  SHIPPING: '2',   // 已发货，待收货
  COMPLETED: '3',  // 已收货，已完成
  CANCELLED: '4',  // 已取消
  REFUNDING: '5',  // 售后处理
  REFUNDED: '6',   // 已退货
  SUCCESS: '7'     // 已成功处理
}

// 获取订单状态文本
export function getOrderStatusText(status) {
  const statusMap = {
    [OrderStatus.PENDING]: '待支付',
    [OrderStatus.PAID]: '待发货',
    [OrderStatus.SHIPPING]: '待收货',
    [OrderStatus.COMPLETED]: '已完成',
    [OrderStatus.CANCELLED]: '已取消',
    [OrderStatus.REFUNDING]: '售后处理中',
    [OrderStatus.REFUNDED]: '已退货',
    [OrderStatus.SUCCESS]: '已成功处理'
  }
  return statusMap[status] || '未知状态'
}

// 获取订单状态颜色
export function getOrderStatusColor(status) {
  const colorMap = {
    [OrderStatus.PENDING]: '#ff976a',
    [OrderStatus.PAID]: '#1989fa',
    [OrderStatus.SHIPPING]: '#1989fa',
    [OrderStatus.COMPLETED]: '#07c160',
    [OrderStatus.CANCELLED]: '#969799',
    [OrderStatus.REFUNDING]: '#ff976a',
    [OrderStatus.REFUNDED]: '#07c160',
    [OrderStatus.SUCCESS]: '#07c160'
  }
  return colorMap[status] || '#969799'
}

// 获取订单状态背景色
export function getOrderStatusBgColor(status) {
  const bgColorMap = {
    [OrderStatus.PENDING]: '#fff7ed',
    [OrderStatus.PAID]: '#eff6ff',
    [OrderStatus.SHIPPING]: '#eff6ff',
    [OrderStatus.COMPLETED]: '#ecfdf5',
    [OrderStatus.CANCELLED]: '#f3f4f6',
    [OrderStatus.REFUNDING]: '#fff7ed',
    [OrderStatus.REFUNDED]: '#ecfdf5',
    [OrderStatus.SUCCESS]: '#ecfdf5'
  }
  return bgColorMap[status] || '#f3f4f6'
}

/**
 * 判断订单是否可以支付
 * @param {Object} order 订单对象
 * @returns {boolean} 是否可以支付
 */
export function canPayOrder(order) {
  return order.status === OrderStatus.PENDING
}

/**
 * 判断订单是否可以取消
 * @param {Object} order 订单对象
 * @returns {boolean} 是否可以取消
 */
export function canCancelOrder(order) {
  return order.status === OrderStatus.PENDING || order.status === OrderStatus.PAID
}

/**
 * 判断订单是否可以确认收货
 * @param {Object} order 订单对象
 * @returns {boolean} 是否可以确认收货
 */
export function canConfirmOrder(order) {
  return order.status === OrderStatus.SHIPPING
}

/**
 * 判断订单是否可以申请售后
 * @param {Object} order 订单对象
 * @returns {boolean} 是否可以申请售后
 */
export function canRefundOrder(order) {
  // 已发货或已收货7天内可以申请售后
  if (order.status === OrderStatus.SHIPPING) {
    return true
  }
  
  // 已完成订单需要检查是否在7天内
  if (order.status === OrderStatus.COMPLETED) {
    // 获取订单完成时间
    const completedTime = order.createdAt ? new Date(order.createdAt) : null
    if (completedTime) {
      const now = new Date()
      const diffDays = Math.floor((now - completedTime) / (24 * 60 * 60 * 1000))
      return diffDays <= 7
    }
  }
  
  return false
}



// 判断是否可以申请售后（已完成订单7天内可申请）
export function canApplyRefund(order) {
  return canRefundOrder(order)
}

/**
 * 获取订单可执行的操作
 * @param {Object} order 订单对象
 * @returns {Array} 可执行的操作列表
 */
export function getOrderActions(order,isdetail) {
  if (!order) return []
  
  const actions = []
  
  switch (order.status) {
    case OrderStatus.PENDING:
      actions.push(
        { name: 'cancel', text: '取消订单', type: 'default' },
        { name: 'pay', text: '立即支付', type: 'danger' }
      )
      break
    case OrderStatus.PAID:
      // 待发货状态通常没有用户操作
      actions.push(
        { name: 'cancel', text: '取消订单', type: 'default' },
        //{ name: 'detail', text: '订单详情', type: 'default' }
      )
      break
    case OrderStatus.SHIPPING:
      actions.push(
        { name: 'refund', text: '申请售后', type: 'warning' },
        { name: 'confirm', text: '确认收货', type: 'primary' }
      )
      break
    case OrderStatus.COMPLETED:
      // if (!order.reviewed) {
      //   actions.push({ name: 'review', text: '评价', type: 'primary' })
      // }
      if (canApplyRefund(order)) {
        actions.push({ name: 'refund', text: '申请售后', type: 'warning' })
      }
      break
    case OrderStatus.REFUNDING:
      // 售后处理中通常没有用户操作
      // actions.push(
      //   { name: 'detail', text: '订单详情', type: 'default' }
      // )
      // break
    default:
      // actions.push(
      //   { name: 'detail', text: '订单详情', type: 'default' }
      // )
  }
  if(!isdetail){
      actions.push(
        { name: 'detail', text: '订单详情', type: 'default' }
      )
  }
  
  // 订单详情按钮始终显示（如果上面的switch没有添加）
  // if (!actions.some(action => action.name === 'detail')) {
  //   actions.push({
  //     name: 'detail',
  //     text: '订单详情',
  //     type: 'default'
  //   })
  // }
  
  return actions
}